From e36b5948678607fa33b2a8d05adfaa6ce8ee31a1 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Tue, 1 Sep 2020 08:54:01 -0400 Subject: [PATCH] Replace uses of graphene_matrix_transform_ Replace our uses of graphene_matrix_transform_point, _point3d and _bounds by our own versions that handle projective transforms correctly. This fixes render node bounds being incorrect for widgets involving projective transforms (e.g. testrevealer swing transformations), and also fixes picking on such widgets. --- gsk/gsktransform.c | 4 ++-- gtk/gtkwidget.c | 12 ++++++------ 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/gsk/gsktransform.c b/gsk/gsktransform.c index feaec99187..337a27ed12 100644 --- a/gsk/gsktransform.c +++ b/gsk/gsktransform.c @@ -1822,7 +1822,7 @@ gsk_transform_transform_bounds (GskTransform *self, graphene_matrix_t mat; gsk_transform_to_matrix (self, &mat); - graphene_matrix_transform_bounds (&mat, rect, out_rect); + gsk_matrix_transform_bounds (&mat, rect, out_rect); } break; } @@ -1878,7 +1878,7 @@ gsk_transform_transform_point (GskTransform *self, graphene_matrix_t mat; gsk_transform_to_matrix (self, &mat); - graphene_matrix_transform_point (&mat, point, out_point); + gsk_matrix_transform_point (&mat, point, out_point); } break; } diff --git a/gtk/gtkwidget.c b/gtk/gtkwidget.c index e8106fca84..ccc085256c 100644 --- a/gtk/gtkwidget.c +++ b/gtk/gtkwidget.c @@ -4050,7 +4050,7 @@ gtk_widget_compute_point (GtkWidget *widget, return FALSE; } - graphene_matrix_transform_point (&transform, point, out_point); + gsk_matrix_transform_point (&transform, point, out_point); return TRUE; } @@ -9370,8 +9370,8 @@ gtk_widget_do_pick (GtkWidget *widget, gsk_transform_unref (transform); graphene_point3d_init (&p0, x, y, 0); graphene_point3d_init (&p1, x, y, 1); - graphene_matrix_transform_point3d (&inv, &p0, &p0); - graphene_matrix_transform_point3d (&inv, &p1, &p1); + gsk_matrix_transform_point3d (&inv, &p0, &p0); + gsk_matrix_transform_point3d (&inv, &p1, &p1); if (fabs (p0.z - p1.z) < 1.f / 4096) continue; @@ -9547,9 +9547,9 @@ gtk_widget_compute_bounds (GtkWidget *widget, } gtk_css_boxes_init (&boxes, widget); - graphene_matrix_transform_bounds (&transform, - gtk_css_boxes_get_border_rect (&boxes), - out_bounds); + gsk_matrix_transform_bounds (&transform, + gtk_css_boxes_get_border_rect (&boxes), + out_bounds); return TRUE; } -- 2.30.2